import { PerspectiveCamera, Scene, Color, WebGLRenderer } from "three";
import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";

//  创建相机

export function createdCamera() {
  // PerspectiveCamera （视角，长宽比，近裁剪面，远裁剪面）
  const camera = new PerspectiveCamera(
    75,
    window.innerWidth / window.innerHeight,
    0.1,
    1000
  );
  camera.position.set(0, 0, 250);
  return camera;
}
// 控制器
// 导出一个函数，用于创建控制器
export function createControl(
  // 传入一个透视相机对象和一个HTML画布元素
  camera: PerspectiveCamera,
  canvas: HTMLCanvasElement
) {
  // 创建一个轨道控制器对象
  const controls = new OrbitControls(camera, canvas);
  // 启用阻尼效果
  controls.enableDamping = true;
  // 将update方法赋值给tick属性
  Object.assign(controls, {
    tick: controls.update,
  });
  // 返回控制器对象
  return controls;
}
// 场景
export function createScene(background = "#000") {
  const scene = new Scene();
  scene.background = new Color(background);
  return scene;
}
// 渲染器
export function createRenderer(canvas: HTMLCanvasElement) {
  const renderer = new WebGLRenderer({
    antialias: true, //抗锯齿
  });
  return renderer;
}
